// 在页面里导入一下
import validate from 'wechat-validate'
const app = getApp()
Page({
  // 通过behaviors注入validate方法
  behaviors: [validate],
  data: {
    countDownVisible: false,
    mobile: '',
    code: '',
  },

  // 定义表单数据的验证规则
  rules: {
    mobile: [{
        required: true,
        message: '请填写手机号码!',
      },
      {
        pattern: /^1[3-8]\d{9}$/,
        message: '请检查手机号码是否正确!',
      },
    ],
    code: [{
        required: true,
        message: '请填写短信验证码!',
      },
      {
        pattern: /^\d{6}$/,
        message: '请检查短信验证码是否正确!',
      },
    ],
  },
  onLoad({
    redirectUrl
  }) {
    // 获取跳转路径
    // data当中放的数据都是页面(wxml)里要用的 如果不用可以直接挂在对象上
    this.redirectUrl = redirectUrl
  },
  // 登录
  // 1. 调接口获取token
  // 2. 将token存到app身上和本地
  // 3. 页面跳转
  async login() {
    // 校验数据是否通过
    // validate() 不传参数就是校验所有数据
    if (!this.validate()) return
    // 校验通过调用接口
    const {
      code,
      data
    } = await wx.http.post('/login', {
      mobile: this.data.mobile,
      code: this.data.code,
    })
    if (code !== 10000) return wx.utils.toast('登录失败,人品不行!')
    // 拿到token之后需要存一下
    app.setToken('token', data.token)
    // 存储一下refresh_token
    app.setToken('refresh_token', data.refreshToken)
    // 跳转新页面 (如果有回跳页面跳转到回跳页面, 否则跳转首页)
    // (如果tabbar页面有跳转拦截 可以通过白名单的方式完善代码)
    // 准备了白名单 白名单里是tabbar页面
    const whiteList = ['pages/index/index', 'pages/my/index']
    if (this.redirectUrl) {
      if (whiteList.includes(this.redirectUrl)) {
        console.log('我进来了');
        wx.switchTab({
          url: '/' + this.redirectUrl,
        })
      } else {
        wx.redirectTo({
          url: '/' + this.redirectUrl,
        })
      }
    } else {
      wx.switchTab({
        url: '/pages/index/index',
      })
    }

  },
  countDownChange(ev) {
    this.setData({
      timeData: ev.detail,
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
  async getCode() {
    // 单独只验证 mobile 这个数据
    const {
      valid,
      dataKey,
      message
    } = this.validate('mobile')
    console.log(valid, dataKey, message)
    if (!valid)
      return wx.showToast({
        title: message,
        icon: 'none',
      })
    this.setData({
      countDownVisible: true,
    })
    // 调接口获取验证码 (真实开发当中是后端发送验证码到手机上)
    const {
      code
    } = await wx.http.get('/code', {
      mobile: this.data.mobile,
    })
    console.log()
    if (code !== 10000) return wx.utils.toast('发送验证码失败,请重试!')
  },
})